Linux 系统,确保电脑能科学上网,并配置命令行 http 代理!
安装 depot_tools,并配置环境变量:
https://webrtc.googlesource.com/src/+/main/docs/native-code/android/README.md
创建工作目录(确保磁盘可用空间足够,建议至少预留50G吧),并进入,执行:
1
2fetch --nohooks webrtc_android
gclient sync这一步时间很长很长,请耐心等待。
确定需要编译的 WebRTC 版本:
这里以 M123 为例,切换到 M123 所在分支,并同步:
1
2
3
4
5cd src
git checkout -b m123/6312 branch-heads/6312
cd ..
gclient sync --nohooks
gclient runhooks如果再次切换分支,例如,从 M123 切换到 M114,再次同步的时候,可能会报错:
Error: Command ‘git -c core.deltaBaseCacheLimit=2g fetch origin debe7d2d1982e540fbd6bd78604bf001753f9e74 –no-tags’ returned non-zero exit status 128 in /home/eco/Disk/Documents/webrtc_android/src/third_party/libFuzzer/src
网上好多都说配置 git config –global http.postBuffer 1048576000 之类的,可是我试了并没有卵用,最后是把出问题的目录删除,例如上面的错就是把 third_party/libFuzzer/src 删除,再重新 gcient sync –nohooks 即可。
安装编译所需的相关依赖:
1
2cd src
./build/install-build-deps.sh --android生成 ninja 项目,确保当前在 src 目录下,执行:
1
gn gen out/M123/release/arm64 --args='target_os="android" target_cpu="arm64" is_debug=false treat_warnings_as_errors=false'
- To build for ARM64: use
target_cpu="arm64"
- To build for 32-bit x86: use
target_cpu="x86"
- To build for 64-bit x64: use
target_cpu="x64"
tip: 查看 gn args:
gn args --list <dir>
- To build for ARM64: use
编译项目:
1
autoninja -C out/M123/release/arm64
编译 AAR:
1
./tools_webrtc/android/build_aar.py --build-dir out/aar --arch "armeabi-v7a" "arm64-v8a" --output "out/aar/libwebrtc-M123.aar" --extra-gn-args='treat_warnings_as_errors=false'